#include "aabb.h"
bool aabb::hit(const ray& r,float tmin,float tmax)const {
	//std::cout<<tmin<<' '<<tmax<<std::endl;
	for (int a = 0;a < 3;a++) {
		float t0 = ffmin((_min[a]-r.origin()[a])/r.direction()[a],
			(_max[a]-r.origin()[a])/r.direction()[a]);
		float t1 = ffmax((_min[a]-r.origin()[a])/r.direction()[a],
			(_max[a] - r.origin()[a]) / r.direction()[a]);
		//std::cout<<t0<<' '<<t1<<std::endl;
		tmin = ffmax(t0, tmin);
		tmax = ffmin(t1, tmax);
		if (tmax <= tmin)return false;
	}
	return true;
}
aabb surrounding_box(aabb box0, aabb box1) {
	vec3 small(fmin(box0.rmin().x(),box1.rmin().x()),
		fmin(box0.rmin().y(),box1.rmin().y()),
		fmin(box0.rmin().z(), box1.rmin().z()));
	vec3 big(fmax(box0.rmax().x(), box1.rmax().x()),
		fmax(box0.rmax().y(), box1.rmax().y()),
		fmax(box0.rmax().z(), box1.rmax().z()));
	return aabb(small,big);
}